The invention relates to a device and method to enable interrupt handling for mass storage devices interfacing to different controllers and the loading of the proper device driver for the controller used.
Microprocessor-based systems have for some time been using small computer system interface (SCSI) to connect and control peripheral devices such as disk drives used for mass storage of data. This SCSI form of interface for disk drives has become so popular that the manufacturers of computer base boards (also known as mother boards) have incorporated the SCSI disk controller directly into the computer base boards. With the SCSI disk controller implemented directly on the computer base board a separate SCSI disk controller that would plug into the computer base board is not required and the user of such a computer base board would not require the purchasing of such a separate SCSI disk controller.
More recently peripheral component interconnect (PCI) redundant array of independent disks (RAID) controllers have also become popular due to the large number disk drives, volume of data per drive, relatively low cost of the drives, and their ability to control both RAID drives and SCSI disk drives. Therefore, the manufacturers of computer base boards have provided PCI slots on the computer base boards for RAID disk controllers in addition to the SCSI disk controller which is incorporated in the computer base board itself. By having both a RAID disk controller and a SCSI disk controller in a single system, a large number of both types of disk drives can be supported. However, the integrators or original equipment manufacturers (OEMs) of personal computers have not seen a large demand for both types of disk drives on a single system. Further, these OEMs have objected to the presence of ports for both SCSI disk drives and RAID disk drives since they take up space in the cabinet and add cost to the computer system in a very competitive market. Therefore, since a RAID disk controller could control SCSI disk drives and the interface for SCSI drives already exists on the computer base board, a zero-channel RAID (ZCR) disk controller was developed. This ZCR may optionally not interface to RAID disk drives but would interface to SCSI disk drives through the computer base board.
As would be appreciated by one of ordinary skill in the art, the presence of a SCSI disk controller built into a computer base board and a ZCR disk controller, that actually is used control the SCSI disk drives, could create a problem if on starting up the computer system the operating system loaded both a SCSI device driver and a RAID device driver. If both types of device drivers were loaded and attempted to access the SCSI disk drives, this would in most cases cause a complete system failure. However, this has not been a significant issue when using the older operating systems such as DOS, Windows 3.1(trademark), Windows NT(trademark), and Windows 95(trademark), since it is possible to specify either which device drivers may be loaded on system start up or which device drivers would not be loaded. This is not the case with the newer plug and play operating systems such as Windows 2000(trademark).
In the newer plug and play operating systems, each time the computer system is started, the operating system will check for all devices and controllers on the system. The operating system will then load a device driver for devices and controllers discovered on the system. These device drivers both control and field interrupts from the controllers and devices. Therefore, installing new devices under plug and play operating systems, such as Windows 2000(trademark), is a simple matter of plugging them in and turning on the computer system. However, when Windows 2000(trademark) discovers the presence of a SCSI disk controller on the computer base board and a ZCR disk controller, Windows 2000(trademark) will load a device driver for both. Further, the option of loading only designated device drivers or not loading designated device drivers is unavailable under Windows 2000(trademark). With both device drivers trying to field interrupts and communicating to the same disk drives at the same time the computer system will experience a total failure.
Therefore, what is needed is a device and method in which only the ZCR is discovered by the plug and play operating system while the SCSI disk controller on the computer base board is masked or hidden from discovery by the plug and play operating system. Thus, upon system start up only a device driver for the ZCR is loaded by the plug and play operating system and not one for the SCSI disk controller. Further, as interrupts are generated by the SCSI disk drives, these interrupts should be passed through the ZCR rather than the SCSI disk controller so that they may be handled by the ZCR device driver.
The present invention is directed to a device to route interrupts from several storage devices and install an appropriate device driver by a plug and play operating system to field the interrupts and control the disk drives. This device has a SCSI I/O device connected to several storage devices having a several interrupt signals and an identification selection signal. Further, this device has a PCI slot, to accept a RAID adapter, connected to the SCSI I/O device having several interrupt signals, an interrupt disable signal, and an identification disable signal. Still further, this device has several tristate units connected the interrupt signals from the SCSI I/O device, the identification selection, the interrupt disable signal, and the identification disable signal. When the RAID adapter is plugged into the PCI slot, the tristate units route the interrupt signals from the SCSI I/O device to the PCI slot and disable the identification selection signal so that the plug and play operating system does not recognize the SCSI I/O device.